package Z.dailyExercise.March;

import java.util.HashMap;
import java.util.Map;

public class _3无重复字符的最长子串 {

    /**
     * 滑窗：如果窗口中含有下一个要进来的元素 那么左界移到第一个重复的位子右侧
     * s无法直接得到index 所以采用map存
     * ===可以不用push  在左指针移动时候 判断一下 移动位置和left原数值大小是否一样就行
     * @param s
     * @return
     */
    public int lengthOfLongestSubstring(String s) {
        if (s.length() == 0){
            return 0;
        }

        Map<Character,Integer> map = new HashMap<>();
        int i=0,j=0;
        int res= Integer.MIN_VALUE;
        while (j<s.length()){
            if (map.containsKey(s.charAt(j))){
                i = Math.max(i,map.get(s.charAt(j)) +1 );
            }
            map.put(s.charAt(j),j);
            res = j-i+1>res?j-i+1:res;
            j++;

        }
        return res;

    }
}
